#pragma once
#include <any>

#include "syralink.hpp"

namespace sl {
    class Excutor : public sl::NonCopyable
    {
    public:
        using Callback = std::function<void()>;

        virtual bool is_running() const = 0;
        virtual void submit(std::any handle, Callback cb) = 0;
        virtual void remove(std::any handle) = 0;
        virtual ~Excutor() = default;
    };

    const Excutor& excutor();
}
